package ssm.mybatisplus.pojo;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

/**
 * @TableName
 * 1. 用于实体类，不用注解时，默认使用类名作为表名，忽略大小写
 * 2. 当数据库表名和实体类名不同时，通过 @TableName("table_name") 指定表名
 * 3. 可以通过配置文件统一添加前缀 application.yml 配置 mybatis-plus.global-config.db-config.table-prefix:xx_
 *
 * @TableId
 * 1. 用于类属性，设置主键自增长。要求MySQL数据库设置了数字类型的主键，且开启了自增长auto_increment
 * 2. 执行插入数据操作时，生成的主键默认使用雪花算法，实体类生成Long类型数组，对应数据库bigint/varchar(64)。用于分布式或大量数据。
 * 3. @TableId(type = IdType.AUTO)
 * 4. 可以通过配置文件统一设置主键策略 application.yml 配置 mybatis-plus.global-config.db-config.id-type: auto
 *
 * @TableFiled
 * 1. 用于标注类属性是否为数据库字段
 * 2. @TableField(value = "数据库字段名", exist = 是否为数据库字段)
 *
 * @TbaleLogic
 * 1. 用于类属性，标注对应的数据库字段为逻辑删除字段
 * 2. 当执行删除操作后，自动变成修改此列的属性值，默认0表示未删除，1表示删除
 * 3. 当执行查询操作时，默认只返回状态值为 0 的数据
 * 4. 可以通过配置文件统一设置逻辑属性名 application.yml 配置 mybatis-plus.global-config.db-config.logic-delete-field: deleted
 *
 * @Version
 * 1. 用于类属性，标注对应的数据库字段为版本号字段
 */

//@TableName("t_user")
@Data
public class User {

    @TableId(type = IdType.AUTO)
    private Long id;

    @TableField(value = "name", exist = true)
    private String name;

    private Integer age;

    private String email;

    @TableLogic
    private Integer deleted;

    @Version
    private Integer version; //版本号字段
}